# 李广龙
# 如果要进行静态文件映射 要挂载目录 要不然找不到文件

echo nginx版本:1.21.5

# NGINX_VERSION=1.21.5
# 容器外部查询nginx配置文件是否正确
# docker exec nginx nginx -t

#配置文件存放目录默认会在当前目录创建nginx
CONFIGPATH="/data"
SERVICE_NAME="nginx"
# 映射 宿主机端口
PORT="80"
# 挂载文件夹
# 配置nginx 的 配置文件的时候 要以 容器内的路径为准
# 映射关键字建议用alias 不要用 root
# 映射目录写nginx容器内的不是外部文件，虽然映射了文件夹，但文件夹的前缀可能不一样，具体以nginx内的路径为准(重点)
# 映射文件夹内先不要放入任何文件运行脚本会自动生成index.html直接访问对应端口查询是否成功
# 成功后在修改配置文件等...

# 例: /root  路径后边不要带 /
# VFILE="/root/sh"
VFILE=""

# 加入映射成功后 所有的前端文件都可以放入 vfile 文件夹中 如果是多项目 可以在vfile中新建二级目录文件
# location 匹配时 映射具体的文件夹即可 不过路径一定都是 /usr/share/nginx/html 开头的
# 假如创建的二级目录是file,则通过url访问 ip:port/file/    就可以访问二级目录下的index文件
# 如果location 中的关键字,不想和文件名有关系,则用alias关键字 定位固定文件夹救可以了!
# ... 有时间编译还是用 编译安装吧! 不注意容易出问题..............
# 2022/3/22 0:56








creatStart(){
  mkdir "$CONFIGPATH"/nginx
  echo "开始运行临时nginx"
  docker run --name nginx -d nginx
  echo "开始复制配置文件"
  docker cp nginx:/etc/nginx "$CONFIGPATH"/nginx
  echo "停止临时容器"
  docker stop nginx
  echo "删除临时容器"
  docker rm nginx
  echo "运行容器并挂载配置文件"
  if [ -d $VFILE ];then
    echo "开始创建html文件"
    creatHtml
  fi
  startNginx

}

creatHtml() {
cd $VFILE || exit
cat >./index.html <<EOF
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>liguanglong</h1>
<h1>Docker-nginx</h1>

</body></html>
EOF
}
startNginx(){
  if [ -z $VFILE ];then
    echo "只挂载配置文件启动nginx容器!"
    docker run --name "$SERVICE_NAME" -d -p "$PORT":80 --restart=always -v "$CONFIGPATH"/nginx/nginx:/etc/nginx nginx
  else
    echo "同时挂载配置文件和资源文件夹进行启动nginx容器!"
    docker run --name "$SERVICE_NAME" -d -p "$PORT":80 --restart=always -v "$CONFIGPATH"/nginx/nginx:/etc/nginx -v "$VFILE":/usr/share/nginx/html nginx
  fi
  docker ps
}

read -p '输入功能编号0创建挂载运行 1挂载运行: (任意键退出)' input
echo "输入编号:$input"

case $input in
    0)
    creatStart
    ;;
    1)
    startNginx
    ;;
    *)
    echo -e "${RED}退出sh脚本${RES}"
    exit 0
    ;;
  esac